//package com.camel.base.utils;
//
//import com.goshine.common.constant.Constants;
//import com.goshine.common.core.domain.entity.SysDictData;
//import com.goshine.common.core.redis.RedisCache;
//import com.goshine.common.utils.poi.ExcelCommonData;
//import com.goshine.common.utils.spring.SpringUtils;
//
//import java.util.Collection;
//import java.util.List;
//import java.util.Map;
//
///**
// * 字典工具类
// *
// * @author goshine
// */
//public class DictUtils {
//    /**
//     * 分隔符
//     */
//    public static final String SEPARATOR = ",";
//
//    /**
//     * 设置字典缓存
//     *
//     * @param key       参数键
//     * @param dictDatas 字典数据列表
//     */
//    public static void setDictCache(String key, List<SysDictData> dictDatas) {
////        SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas);
//    }
//
//    /**
//     * 设置字典缓存
//     *
//     * @param key       参数键
//     * @param dictDatas 字典数据列表
//     */
//    public static void setDictCache(String key, Map<String, String> dictDatas) {
////        SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas);
//        ExcelCommonData.DICT_DATAS.put(getCacheKey(key), dictDatas);
//    }
//
//    /**
//     * 获取字典缓存
//     *
//     * @param key 参数键
//     * @return dictDatas 字典数据列表
//     */
//    public static List<SysDictData> getDictCache(String key) {
//        List<SysDictData> cacheObj = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
//        if (StringUtils.isNotNull(cacheObj)) {
//            List<SysDictData> dictDatas = StringUtils.cast(cacheObj);
//            return dictDatas;
//        }
//        return null;
//    }
//
//    /**
//     * 获取字典缓存
//     *
//     * @param key 参数键
//     * @return dictDatas 字典数据列表
//     */
//    public static Map<String, String> getDictMapCache(String key) {
////        Map<String, String> cacheObj = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
//        Map<String, String> cacheObj =ExcelCommonData.DICT_DATAS.get(getCacheKey(key));
//        return cacheObj;
////        if (StringUtils.isNotNull(cacheObj)) {
////            Map<String, String> dictDatas = StringUtils.cast(cacheObj);
////            return dictDatas;
////        }
////        return null;
//    }
//
//    /**
//     * 根据字典类型和字典值获取字典标签
//     *
//     * @param dictType  字典类型
//     * @param dictValue 字典值
//     * @return 字典标签
//     */
//    public static String getDictLabel(String dictType, String dictValue) {
//        return getDictLabel(dictType, dictValue, SEPARATOR);
//    }
//
//    /**
//     * 根据字典类型和字典标签获取字典值
//     *
//     * @param dictType  字典类型
//     * @param dictLabel 字典标签
//     * @return 字典值
//     */
//    public static String getDictValue(String dictType, String dictLabel) {
//        return getDictValue(dictType, dictLabel, SEPARATOR);
//    }
//
//    /**
//     * 根据字典类型和字典值获取字典标签
//     *
//     * @param dictType  字典类型
//     * @param dictValue 字典值
//     * @param separator 分隔符
//     * @return 字典标签
//     */
//    public static String getDictLabel(String dictType, String dictValue, String separator) {
//        if (StringUtils.isEmpty(dictValue)) {
//            return "";
//        }
//        StringBuilder propertyString = new StringBuilder();
//        Map<String, String> datas = getDictMapCache(dictType);
//        if (StringUtils.containsAny(separator, dictValue) && StringUtils.isNotEmpty(datas)) {
//            for (String dict : datas.keySet()) {
//                for (String value : dictValue.split(separator)) {
//                    if (value.equals(dict)) {
//                        propertyString.append(datas.get(dict) + separator);
//                        break;
//                    }
//                }
//            }
//        } else {
//
//            String s = datas.get(dictValue);
//            if (StringUtils.isBlank(s)) {
//                return "";
//            }
//            return s;
//        }
//        return StringUtils.stripEnd(propertyString.toString(), separator);
//    }
//
//    /**
//     * 根据字典类型和字典标签获取字典值
//     *
//     * @param dictType  字典类型
//     * @param dictLabel 字典标签
//     * @param separator 分隔符
//     * @return 字典值
//     */
//    public static String getDictValue(String dictType, String dictLabel, String separator) {
//        if (StringUtils.isBlank(dictLabel)) {
//            return "";
//        }
//        StringBuilder propertyString = new StringBuilder();
//        Map<String, String> datas = getDictMapCache(dictType);
//        if (StringUtils.containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas)) {
//            for (String dict : datas.keySet()) {
//                for (String value : dictLabel.split(separator)) {
//                    if (value.equals(dict)) {
//                        propertyString.append(datas.get(dict) + separator);
//                        break;
//                    }
//                }
//            }
//        } else {
//            for (Map.Entry<String, String> stringStringEntry : datas.entrySet()) {
//                if (StringUtils.isNotBlank(stringStringEntry.getValue()) && stringStringEntry.getValue().trim().equals(dictLabel.trim())) {
//                    return stringStringEntry.getKey();
//                }
//            }
//        }
//        return StringUtils.stripEnd(propertyString.toString(), separator);
//    }
//
//    /**
//     * 清空字典缓存
//     */
//    public static void clearDictCache() {
//        Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(Constants.SYS_DICT_KEY + "*");
//        SpringUtils.getBean(RedisCache.class).deleteObject(keys);
//    }
//
//    /**
//     * 设置cache key
//     *
//     * @param configKey 参数键
//     * @return 缓存键key
//     */
//    public static String getCacheKey(String configKey) {
//        return Constants.SYS_DICT_KEY + configKey;
//    }
//}
